import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Escribe una descrición de la clase Arma aquí.
 * 
 * @autor Andrés Cruz Santiago 
 * @versión 23/10/13
 */
public class Arma extends Actor
{
    protected Direccion  dir; //Dirección del Arma
    protected boolean actua; //Bandera qu eindica si esta paralizada o no
    SimpleTimer timer; //Tiempo de Parálisis

    /**
     * Cosntructor de de Arma 
     * @param unPirata Pirata que va lanzar esta Arma
     */
    public Arma(Pirata unPirata)
    {
        dir=unPirata.getDireccion();
        actua=true;
        timer = new SimpleTimer();
    }

    /**
     * Act - hace lo que Espada quiere hacer. Este método se llama "cuando quiera" o whenever
     * los botones 'Actuar or 'Ejecutar' son presionados en el entorno.
     */
    public void act() 
    {
        if(actua)
        {
            if(isTouching(Chapulin.class))
            {
                Greenfoot.playSound("golpe.wav");
                Escenario escenario = (Escenario)getWorld();    
                Chapulin chapulin = escenario.getChapulin();
                chapulin.decrementaPorcentaje();
                Counter porcentje = escenario.getPorcentaje();
                porcentje.setValue(chapulin.getPorcentaje());
                if(chapulin.getPorcentaje() == 0)
                {
                    chapulin.decrementaVidas();
                    Counter counter = escenario.getCounter();
                    counter.setValue(chapulin.getVidas());
                    chapulin.setPorcentaje(100);
                    porcentje.setValue(chapulin.getPorcentaje());
                    chapulin.goHome();
                }
                World mundo=this.getWorld();               
                mundo.removeObject(this);
            }
            else
            {
                mueve();
                elimina();
            }
        }
        else
        {
            if(timer.millisElapsed() > 3000)
            {
                actua=true;
                timer.mark();
            }
        }
    }     

    /**
     * Asigna Dirección del Arma
     * @param unaDir Dirección del Arma
     */
    public void setDir(Direccion unaDir)
    {
        dir=unaDir;
    }

    /**
     * Activa  Actuación
     */
    public void activaActua()
    {
        actua=true;
    }

    /**
     * Desactiva Actuación
     */
    public void desactivaActua()
    {
        timer.mark();
        actua=false;
    }

    /**
     * Mueve Arma
     */
    public void mueve(){}

    /**
     * Elimmina Arma
     */
    public void elimina(){}
}
